using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using Coordenadas;
using LectorXML;

namespace MapaMovil
{
    public partial class FormSeleccionDestino : Form
    {
        private FormPrincipal fm;
        private List<LatLong> lugares;
        Idioma textos;
        /*Cambio de FormMapa a FormCarros*/
        public FormSeleccionDestino(FormPrincipal f, string url_servicio, Idioma textos)
        {
            Cursor.Current = Cursors.WaitCursor;
            this.textos = textos;
            InitializeComponent();
            /*
             * Ahora hacemos que los textos vayan en el idioma elejido
             */

            this.label_latitud.Text = this.textos.valor("/mensajes/FormSeleccionDestino/Latitud");
            this.label_longitud.Text = this.textos.valor("/mensajes/FormSeleccionDestino/Longitud");
            this.buttonAceptar.Text = this.textos.valor("/mensajes/FormSeleccionDestino/Aceptar");
            this.buttonCancelar.Text = this.textos.valor("/mensajes/FormSeleccionDestino/Cancelar");
            this.label3.Text = this.textos.valor("/mensajes/FormSeleccionDestino/SeleccionDestino");
            this.Text = this.textos.valor("/mensajes/FormSeleccionDestino/Titulo");

            /* Modificacion, ahora obtenemos un listado de calles
             * del servidor de la central, las desplegamos como un
             * ComboBox 29-07-2008
             * Agregamos una lista de calles entregadas por la central
             *
             */
            try
            {
                this.lista_calles.Items.Clear();
                FactoryCoordenadas factCoord = new ConcreteCoordenadas();
                XMLCoordenadas coord=factCoord.createCoordenadas(url_servicio);
                //XMLCoordenadas coord = new XMLCoordenadas(url_servicio);
                this.lugares = coord.Emergencias();
                //this.lugares.Reverse();

            }
            catch (Exception) {
                this.lugares.Clear();
                Cursor.Current = Cursors.Default;
            }
            if (this.lugares.Count>0)
            {
                for (int i = 0; i < this.lugares.Count;i++ )
                    this.lista_calles.Items.Add(this.lugares[i].Nombre);
                this.lista_calles.SelectedIndex = 0;
                this.lista_calles.Visible = true;
            }
            else {
                this.lista_calles.Visible = false;
            }
            fm = f;
            Cursor.Current = Cursors.Default;
        }

        private void buttonAceptar_Click(object sender, EventArgs e)
        {
            /*Modificacion 17-10-07 Vherskov*/
            //convertir coordenadas UTM a lat/long
            //TODO: 19H esta hard-coded aqui
            string lat, lon;
            lat = lon = "";
            if (textBoxLongitud.Text != "" && textBoxLatitud.Text != "")
            {
                ConversionCoordenadas cc = new ConversionCoordenadas();
                /* Si esta elijiendo de la lista, entonces actualizamos las coordenadas */
                if (this.lista_calles.Items.Count > 0)
                {
                    lon = lugares[lista_calles.SelectedIndex].Longitud.ToString();
                    lat = lugares[lista_calles.SelectedIndex].Latitud.ToString();
                }
                fm.SeleccionDestinoAceptarClick(textBoxLatitud.Text, textBoxLongitud.Text);
                if (this.lista_calles.Items.Count > 0 && lon == textBoxLongitud.Text && lat == textBoxLatitud.Text)
                    fm.setDestino(this.lugares[this.lista_calles.SelectedIndex].Nombre);
                fm = null;
                this.Close();
            }
        }

        private void buttonCancelar_Click(object sender, EventArgs e)
        {
            fm.modoDesplazamiento(sender, e);
            fm = null;
            this.Close();
        }

        private void lista_calles_SelectedIndexChanged(object sender, EventArgs e)
        {
            ConversionCoordenadas cc = new ConversionCoordenadas();
            /* Si esta elijiendo de la lista, entonces actualizamos las coordenadas */
            textBoxLongitud.Text = lugares[lista_calles.SelectedIndex].Longitud.ToString() + "";
            textBoxLatitud.Text = lugares[lista_calles.SelectedIndex].Latitud.ToString() + "";
        }
    }
}